from ..common import *

__all__ = [
    'get_appnames_by_dirname', # 以根路径为起点解析所有的可能存在的app名称，若是多级，则中间用‘.’隔开
]

def get_appnames_by_dirname(project_base_dir):
    '''以根路径为起点解析所有的可能存在的app名称，若是多级，则中间用‘.’隔开'''
    search_path = os.path.join(project_base_dir, '**', '*')
    possible_app_paths = (_ for _ in glob.glob(search_path, recursive=True) if os.path.isdir(_))
    app_names = []
    split_pattern = re.compile(r'[/\\]')
    for path in possible_app_paths:
        # 判定一个目录是否为应用程序，仅仅需要判定该目录下是否存在 migrations 目录
        if os.path.exists(os.path.join(path, 'migrations')):
            temp = path[len(project_base_dir):].strip("/\\")
            app_names.append('.'.join(split_pattern.split(temp)))
    return app_names
